#ifndef __MY_UTIL_H__
#define __MY_UTIL_H__
#include <iostream>
#include <ctime>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>

using namespace std;
// 实用工具类
// 1、文件是否存在
// 2、获取文件所在目录路径
// 3、获取时间
// 4、创建目录
namespace Util
{
    class Data
    {
    public:
        static size_t GetTime()
        {
            return (size_t)time(nullptr);
        }
    };
    class File
    {
    public:
        static string FilePath(const string &pathname)
        {
            int pos = pathname.find_last_of("/\\");
            if (pos == string::npos)
                return ".";
            return pathname.substr(0, pos + 1);
        }
        static bool Exists(const string &pathname)
        {
            struct stat st;
            return stat(pathname.c_str(), &st) == 0;
        }
        static bool Creatdirectory(const string &path)
        {
            int pos, idx = 0;
            while (idx < path.size())
            {
                pos = path.find_first_of("/\\", idx);
                if (pos == string::npos)
                {
                    mkdir(path.c_str(), 0777);
                    return true;
                }
                if (pos == idx) // 处理的路径中出现空格的情况
                {
                    idx = pos + 1;
                    continue;
                }
                string parent_dir = path.substr(0, pos + 1);
                if (parent_dir == "." || parent_dir == "..")
                {
                    idx = pos + 1;
                    continue;
                }

                if (Exists(parent_dir))
                {
                    idx = pos + 1;
                    continue;
                }
                mkdir(parent_dir.c_str(), 0777);
                idx = pos + 1;
            }
            return true;
        }
    };
}
#endif
